#include <bits/stdc++.h>

// 定义常用的数据类型别名
#define PSI pair<string,int>
#define PII pair<int,int>
#define VVI vector<vector<int>>
#define VI vector<int>
#define VS vector<string>

// 定义优先队列的别名，一个为大顶堆，一个为小顶堆
#define PQLI priority_queue<int, vector<int>, less<int>>
#define PQGI priority_queue<int, vector<int>, greater<int>>
// 定义长整型别名
#define i64 long long

// 使用标准库命名空间
using namespace std;

// 定义常量N，用于表示题目中可能涉及的最大数值
const int N = 1e5 + 5;
// 定义全局变量ans，用于累计答案
i64 ans;

/**
 * @brief 解决问题的主体函数
 * 
 * 本函数主要解决的问题是如何在一系列操作中，计算出进行最多k次操作后，可以得到的最大结果。
 * 具体操作是对一个递减的三角形数列进行操作，每次操作可以选择将某个数增加1。
 */
void solve() {
    // 输入问题的参数n和k
    int n, k;
    cin >> n >> k;
    // 定义局部变量ans，用于计算操作后的结果
    int ans = 0;
    // 遍历三角形数列的每一行，进行操作
    for (int i = 0; i < 2 * n - 1; ++i) {
        // 计算当前行可以操作的最大数
        int t = i == 0 ? n : n - (i + 1) / 2;
        // 如果当前剩余操作次数大于0，则进行操作
        if (k) {
            // 尽可能多地操作，更新操作次数和结果
            k -= min(k, t);
            ++ans;
        }
    }
    // 输出最终结果
    cout << ans << '\n';
}

/**
 * @brief 程序的主函数
 * 
 * 主函数负责程序的初始化和运行流程控制，包括输入测试用例的数量并逐个调用solve函数解决问题。
 */
int main() {
    // 关闭标准输入输出的同步，提高输入输出效率
    ios::sync_with_stdio(false);
    // 解除cin和cout之间的绑定，提高输入输出效率
    cin.tie(nullptr);
    // 输入测试用例的数量
    int T = 1;
    cin >> T;
    // 循环解决每个测试用例
    while (T--) {
        solve();
    }
    // 程序正常结束
    return 0;
}
